<?php

require_once dirname(__FILE__).'/../lib/ingresoReparacionesGeneratorConfiguration.class.php';
require_once dirname(__FILE__).'/../lib/ingresoReparacionesGeneratorHelper.class.php';

/**
 * ingresoReparaciones actions.
 *
 * @package    gescell
 * @subpackage ingresoReparaciones
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 12474 2008-10-31 10:41:27Z fabien $
 */
class ingresoReparacionesActions extends autoIngresoReparacionesActions
{

    public function executeEdit(sfWebRequest $request)
  {    
      $this->ordenesservicio = $this->getRoute()->getObject();
      $this->form = new  ordenesservicioForm($this->ordenesservicio, array('url' => $this->getController()->genUrl('ingresoReparaciones/autocompletado?request=2')));
      $this->form2 = new  modelosForm();
      $this->codigo = $this->request->getParameter('ordenesservicio_id',$this->ordenesservicio->getId());
      $this->form->Detalles = new modelosxingresos;
      $this->form->Detalles = DbFinder::from('modelosxingresos')->
	                                        with('modelos')->
						with('marcas')->
						where('ordenesservicio_id',$this->codigo)->
						find();
      
      $this->form->cantidad = $this->ordenesservicio->getCantidadIngresos();
  }
  public function executeNew(sfWebRequest $request)
  {
    //Inicializo el formulario con los valores que yo deseo que arranque
    $this->form = $this->configuration->getForm();
    $this->ordenesservicio = $this->form->getObject();
    
    //Agregado para Auto Completado:
    $this->form = new  ordenesservicioForm($this->ordenesservicio, array('url' => $this->getController()->genUrl('ingresoReparaciones/autocompletado?request=2')));
    $this->form2 = new clientesForm();
    $this->form->setDefault('fechaingreso',time());
    $this->form->setDefault('sf_guard_user',$this->getUser()->getGuardUser()->getId());
  }
  public function executeBorrarDetalle(sfWebRequest $request){

      if($this->getRequest()->isXmlHttpRequest()){
          $detalles = new modelosxingresos;
          $detalles = modelosxingresosPeer::retrieveByPK($request->getParameter('detalleId'));
          $fallas = $detalles->countfallasxingresoss();
          if ($fallas){
                $this->getResponse()->setStatusCode(404);
                return $this->rendertext('Error: No se puede borrar, Tiene fallas asociadas');
          }
          $detalles->delete();
          $ordenservicio = $request->getParameter('OrdenServicioid');
          $this->form = new ordenesservicioForm();
          $this->form->Detalles = new modelosxingresos;
	  $this->form->Detalles = DbFinder::from('modelosxingresos')->
	                    with('modelos')->
			    with('marcas')->
			    where('ordenesservicio_id',$ordenservicio)->find();
         $os = new ordenesservicio(); $os = ordenesservicioPeer::retrieveByPK($ordenservicio);
         $this->form->cantidad = $os->getCantidadIngresos();
         return $this->renderPartial('detalles_equipos',array('form' => $this->form));
      }
      else{
         $this->getUser()->setFlash('notice', 'El Item Fue Borrado Correctamente.');
         $this->redirect('ingresoReparaciones/edit?id='.$this->getRoute()->getObject()->getId());
      }

  }
  public function executeAutocompletado(){
      $this->forward404Unless($this->getRequest()->isXmlHttpRequest());
      $this->getResponse()->setContentType('application/json');
      $clientes = clientesPeer::ResultadosAutoCompletado($this->getrequest()->getParameter('q'), $this->getrequest()->getParameter('limit'));
      return $this->renderText(json_encode($clientes));
  }
  public function executeAgregar_equipos(){

      if($this->getRequest()->isXmlHttpRequest()){
          $garantia      = $this->getRequest()->getParameter('garantia');
          $modelos_id    = $this->getRequest()->getParameter('modelos_id');
          $imei          = $this->getRequest()->getParameter('imei');
          $ordenservicio = $this->getRequest()->getParameter('os');
          //Agregado para chequear las Garantias
          if($this->getRequest()->hasParameter('confirmacion'))
              $garantia = true;
          else{
              if ($garantia){
                  if (modelosxingresosPeer::EstaEnGarantia($imei))
                      $garantia = true;
                  else{
                     return $this->getResponse()->setStatusCode(404);
                  }
              }
              else
                  $garantia = false;
              
          }

             
          //Fin de lo agregado

          $modelosxingresos = new modelosxingresos();
          $modelosxingresos->setModelosId($modelos_id);
          $modelosxingresos->setimei($imei);
          $modelosxingresos->setOrdenesservicioId($ordenservicio);
          $modelosxingresos->setGarantia($garantia);
          $modelosxingresos->save();
          $this->form = new ordenesservicioForm();
          $this->form->Detalles = new modelosxingresos;
	  $this->form->Detalles = DbFinder::from('modelosxingresos')->
	                    with('modelos')->
			    with('marcas')->
			    where('ordenesservicio_id',$ordenservicio)->find();
         $os = new ordenesservicio(); $os = ordenesservicioPeer::retrieveByPK($ordenservicio);
         $this->form->cantidad = $os->getCantidadIngresos();
         return $this->renderPartial('detalles_equipos',array('form' => $this->form));
      }
  }
  public function executeNuevo_modelo(){
      //$this->form = new modelosForm();
      //return $this->renderpartial('nuevo_modelo', array('form' => $this->form));
  }
  public function executeAutocompletar_modelo(){
      $this->forward404Unless($this->getRequest()->isXmlHttpRequest());
      $this->getResponse()->setContentType('application/json');
      $modelos = modelosPeer::ResultadosAutoCompletado($this->getrequest()->getParameter('q'), $this->getrequest()->getParameter('limit'));
      return $this->renderText(json_encode($modelos));
  }
   public function executeTrabajos(sfWebRequest $request)
  {
 		$this->ingresoid = $request->getParameter('ingresoid');
                $ingreso = modelosxingresosPeer::retrieveByPK($this->ingresoid);

		if($this->getRequest()->isXmlHttpRequest()){
                      $lista_fallas_equipo = fallasxingresosPeer::getFallas($this->ingresoid);
                      $lista_fallas_aagregar = fallasxingresosPeer::getFallasAAgregar($this->ingresoid);
                      return $this->renderpartial('listadetrabajos',array('lista_fallas_aagregar' => $lista_fallas_aagregar,'lista_fallas_equipo'=> $lista_fallas_equipo, 'ingresoid' => $request->getParameter('ingresoid')));
                }
                $this->lista_fallas_equipo = fallasxingresosPeer::getFallas($this->ingresoid);
                $this->lista_fallas_aagregar = fallasxingresosPeer::getFallasAAgregar($this->ingresoid);
                $this->form2 = new preciosxmodelosForm();
                $this->form2->setDefault('modelos_id', $ingreso->getModelosId());
                $this->setLayout('default_layout') ;

  }
  public function executeAgregartrabajo(sfWebrequest $request){



            if($this->getRequest()->isXmlHttpRequest()){
                $modeloingresoId = $request->getParameter('ingresoid');
                //Verificación del estado de La reparación
                $equipo = modelosxingresosPeer::retrieveByPK($modeloingresoId);
                if($equipo->getReparado()){
                      $this->getResponse()->setStatusCode(404);
                      return $this->renderText('La reparación del Equipo ha Concluido, no se pueden realizar cambios');
                }
                else{
                    $ids = $request->getParameter('ids');
                    $observaciones = $request->getParameter('observaciones');
                    $fallasxingresos = new fallasxingresos();
                    $fallasxingresos->setModelosxingresosId($modeloingresoId);
                    $fallasxingresos->setPreciosxmodelosId($ids);
                    $fallasxingresos->setObservaciones($observaciones);
                    $fallasxingresos->save();
                    $lista_fallas_equipo = fallasxingresosPeer::getFallas($modeloingresoId);
                    $lista_fallas_aagregar = fallasxingresosPeer::getFallasAAgregar($modeloingresoId);
                    return $this->renderpartial('listadetrabajos',array('lista_fallas_aagregar' => $lista_fallas_aagregar,'lista_fallas_equipo'=> $lista_fallas_equipo, 'ingresoid' => $request->getParameter('ingresoid')));
                }

        }
        else{
	       $this->getUser()->setFlash('notice','Agregado Correctamente');
	       $this->redirect('ingresoReparaciones/trabajos?ingresoid='.$modeloingresoId);
        }
  }
  public function executeBorrar(sfWebrequest $request){

	if ($this->getRequest()->isXmlHttpRequest()){
           $modeloingresoId = $request->getParameter('ingresoid');
	   $ids = $request->getParameter('ids');
	   $equipo = modelosxingresosPeer::retrieveByPK($modeloingresoId);
           if($equipo->getReparado()){
               $this->getResponse()->setStatusCode(404);
               return $this->renderText('La reparación del Equipo ha Concluido, no se pueden realizar cambios');
           }
           else{
               $fallasxingresos = new fallasxingresos();
               $fallasxingresos = fallasxingresosPeer::retrieveByPk($ids);
               $fallasxingresos->delete();
               $lista_fallas_equipo = fallasxingresosPeer::getFallas($modeloingresoId);
               $lista_fallas_aagregar = fallasxingresosPeer::getFallasAAgregar($modeloingresoId);
               return $this->renderpartial('listadetrabajos',array('lista_fallas_aagregar' => $lista_fallas_aagregar,'lista_fallas_equipo'=> $lista_fallas_equipo, 'ingresoid' => $request->getParameter('ingresoid')));
	   }
        }
	else {
          $this->redirect('detalleservicios/trabajos?ingresoid='.$modeloingresoId);
       }
  }
  public function executeAgregarPrecio(sfWebRequest $request){
        if ($request->isXmlHttpRequest()){
            $preciosxmodelos = $request->getParameter('preciosxmodelos');
            $modeloingresoId = $request->getParameter('ingreso_id');
            if (preciosxmodelosPeer::ClaveRepetida($preciosxmodelos['modelos_id'],$preciosxmodelos['listadeprecios_id'])){
                 $this->getResponse()->setStatusCode(404);
                 return $this->renderText('El trabajo es repetido para este Equipo');
            }
            else{
                $precioxmodelo = new preciosxmodelos();
                $precioxmodelo->setModelosId($preciosxmodelos['modelos_id']);
                $precioxmodelo->setListadepreciosId($preciosxmodelos['listadeprecios_id']);
                $precioxmodelo->setPrecio($preciosxmodelos['precio']);
                $precioxmodelo->setIva($preciosxmodelos['iva']);
                $precioxmodelo->save();

            }
            $lista_fallas_equipo = fallasxingresosPeer::getFallas($modeloingresoId);
            $lista_fallas_aagregar = fallasxingresosPeer::getFallasAAgregar($modeloingresoId);
            return $this->renderpartial('listadetrabajos',array('lista_fallas_aagregar' => $lista_fallas_aagregar,'lista_fallas_equipo'=> $lista_fallas_equipo, 'ingresoid' => $modeloingresoId));
        }
  }
  public function executeBatchborrar(sfWebrequest $request){
      //Agregado por marcelo
      if($this->getRequest()->isXmlHttpRequest()){
                $Agregados = $request->getParameter('Agregados');

                $equipo = modelosxingresosPeer::retrieveByPK($Agregados['ingreso_id']);
                if($equipo->getReparado()){
                      $this->getResponse()->setStatusCode(404);
                      return $this->renderText('La reparación del Equipo ha Concluido, no se pueden realizar cambios');
                }
                else{
                    $ids = $request->getParameter('ids');
                    if($ids)
                        foreach($ids as $id){
                             //Aca va El metodo para Borrar
                             $fallasxingresos = fallasxingresosPeer::retrieveByPk($id);
                             $fallasxingresos->delete();
                        }


                    $lista_fallas_equipo = fallasxingresosPeer::getFallas($Agregados['ingreso_id']);
                    $lista_fallas_aagregar = fallasxingresosPeer::getFallasAAgregar($Agregados['ingreso_id']);
                    return $this->renderpartial('listadetrabajos',array('lista_fallas_aagregar' => $lista_fallas_aagregar,'lista_fallas_equipo'=> $lista_fallas_equipo, 'ingresoid' => $Agregados['ingreso_id']));
                }

        }
        else{
	       $this->getUser()->setFlash('notice','Agregado Correctamente');
	       $this->redirect('ingresoReparaciones/trabajos?ingresoid='.$modeloingresoId);
        }
        //Fin
  }





  
  public function executeAgregarclientes(sfWebRequest $request){
      if ($request->isXmlHttpRequest()){
                if ($request->hasParameter('modelos')){
                       $this->Form2 = new modelosForm();
                }
                else{
                   $this->Form2 = new clientesForm();

                }
                $this->procesarForm($request, $this->Form2);
                return $this->rendertext('Guardado');
                 ////return $this->renderpartial('clientes/tipoCliente1',array('form'=>$form));
            }
        }
        protected function procesarForm(sfWebRequest $request, sfForm $form)
        {
            $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
            if ($form->isValid()){
                if ($request->hasParameter('modelos')){
                     $modelos = $form->save();
                }
                else{
                    $clientes = $form->save();
                }
            }

        }
    public function executeBatchagregartrabajo(sfWebrequest $request){



            if($this->getRequest()->isXmlHttpRequest()){
                $fallas = $request->getParameter('fallas');
                
                $equipo = modelosxingresosPeer::retrieveByPK($fallas['ingreso_id']);
                if($equipo->getReparado()){
                      $this->getResponse()->setStatusCode(404);
                      return $this->renderText('La reparación del Equipo ha Concluido, no se pueden realizar cambios');
                }
                else{
                    $ids = $request->getParameter('ids');
                    /*if(isset($fallas['observaciones[]']))
                        $observaciones = $fallas['observaciones[]'];
                    $e=0;*/
                    if($ids)
                        foreach($ids as $id){
                             $fallasxingresos = new fallasxingresos();
                             $fallasxingresos->setModelosxingresosId($fallas['ingreso_id']);
                             $fallasxingresos->setPreciosxmodelosId($id);
                              //$fallasxingresos->setObservaciones($observaciones);
                              $fallasxingresos->save();
                        }

                    
                    $lista_fallas_equipo = fallasxingresosPeer::getFallas($fallas['ingreso_id']);
                    $lista_fallas_aagregar = fallasxingresosPeer::getFallasAAgregar($fallas['ingreso_id']);
                    return $this->renderpartial('listadetrabajos',array('lista_fallas_aagregar' => $lista_fallas_aagregar,'lista_fallas_equipo'=> $lista_fallas_equipo, 'ingresoid' => $fallas['ingreso_id']));
                }

        }
  }
 
}
